1. Field of the Invention
The present invention relates to storage systems, and more particularly to expanders used for communication between SCSI devices.
2. Background of the Invention
Small Computer Systems Interface (“SCSI”) is commonly used to transfer information between a host computer system and a storage device (for example, a SCSI device). SCSI is an industry standard that defines a system level bus with intelligent controllers on each device to manage flow of information.
In a typical SCSI exchange, an initiator sends a “read” or “write” command to a target. For a read operation, the target sends the requested data to the initiator. For a write command, the target sends a “Ready to Transfer” response informing the initiator that the target is ready to accept the write data. The initiator then sends the write data to the target. Once the data is transferred, the exchange enters the response phase. The target then sends a response to the initiator with the status of the operation. Once the initiator receives this response, the exchange is complete.
Various standards are used to facilitate SCSI data transfers and communication. The standards define protocols, signal schemes, and cabling requirements. One such standard is the SCSI parallel interface, also referred to as the “SPI-4” standard, developed as an American National standards institute (“ANSI”), and incorporated herein by reference in its entirety. SPI-4 uses double transition clocking at 80 Mhz which results in a maximum theoretical throughput of 320 Megabytes/second (“MB/s”) on a wide SCSI bus.
“Paced transfer” is used to accomplish 320 MB/S transfer on a 16-bit parallel bus at 80 MHz. This requires transfer of data using dual 80 MHz clocks with each clock transferring two bytes of information. The standard signals used to transfer the data are defined as “REQ” and “ACK”. REQ is a data clock signal from a target to initiator and ACK is a data clock signal from initiator to target.
Before SCSI devices can communicate using paced transfer, a receiver function, which includes receiver skew compensation, clock shifting and receiver signal adjustment must be calibrated. This is accomplished by using a pre-defined calibration (also referred to as training) pattern that is transmitted from the sending device (initiator or target) to the receiving device. FIGS. 3–4 show timing diagrams of data sent from a target device to an initiator and vice versa. Training signal is divided into three parts per the SPI-4 standard, namely Section A 303, Section B 305 and Section C 306 with a typical 50 nanosecond (ns) 304 delay between Section B 305 and Section A 303.
A SCSI expander is typically used to isolate, convert and expand the SCSI domain. An expander can isolate different SCSI domains allowing two or more devices to exist in electrically isolated domains. An expander can act as a converter allowing a single-ended device to connect to a low-voltage differential device. The expander may also be used to extend cable length by re-timing SCSI signals.
SCSI expanders may use precision delay cells (“PDC”) to implement the foregoing data-paths. The expander receives all signals transmitted by a source device initiator or target, re-times the signal for optimal set-up and “repeats” the received signals.
FIG. 5 shows the training functionality of an expander 503 with respect to initiator 505 and target 501. During transmission of a paced training pattern, an expander must train its receiver function and train the device downstream. The expander simply cannot “repeat” the training pattern it receives from a source device. The expander has to calibrate its own receiver function and at the same time train the device downstream.
Frequently data must be sent right after the training pattern. There is no time window to switch from the training mode to repeat mode (i.e., when data is transmitted). This problem gets worse if there are more than one SCSI device involved. This causes delay and latency, which is not commercially desirable in expanders.
Therefore, what is required is a process and system that will allow a simple, PDC expander to train receivers and transfer data efficiently.